From 3e3f17576e07334e6c5be12fee9ed78f13f0cc24 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Mon, 28 Sep 2015 05:21:06 +0200 Subject: [PATCH] widget: Warn if size-unqueried widgets get allocated Widgets should have gtk_widget_get_preferred_width/height() called on them before gtk_widget_size_allocate() gets called. Add a check for this. --- gtk/gtkwidget.c | 7 +++++++ gtk/gtkwidgetprivate.h | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index f6c7699b16..15579a9cc1 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -5845,6 +5845,13 @@ gtk_widget_size_allocate_with_baseline (GtkWidget *widget, gtk_widget_push_verify_invariants (widget); #ifdef G_ENABLE_DEBUG + if (gtk_widget_get_resize_needed (widget)) + { + g_warning ("Allocating size to %s %p without calling gtk_widget_get_preferred_width/height(). " + "How does the code know the size to allocate?", + gtk_widget_get_name (widget), widget); + } + if (GTK_DEBUG_CHECK (GEOMETRY)) { gint depth; diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h index 2e02308eea..566a562cbd 100644 --- a/gtk/gtkwidgetprivate.h +++ b/gtk/gtkwidgetprivate.h @@ -288,6 +288,12 @@ gboolean gtk_widget_has_size_request (GtkWidget *widget); /* inline getters */ +static inline gboolean +gtk_widget_get_resize_needed (GtkWidget *widget) +{ + return widget->priv->resize_needed; +} + static inline GtkWidget * _gtk_widget_get_parent (GtkWidget *widget) { -- 2.30.2